/**
 * 订单服务接口，提供订单的增删改查操作。
 * 专注于处理订单相关的业务逻辑，不涉及具体的数据存储细节。
 */
package com.example.deepschool.service.Order;


public interface Order {
	/**
	 * 插入一个新的订单。
	 *
	 * @param order 待插入的订单对象。
	 * @return 插入后的订单对象，包含生成的订单ID等信息。
	 */
	com.example.deepschool.Model.Order insert (com.example.deepschool.Model.Order order,String UUID);
	
	/**
	 * 根据订单ID查询订单信息。
	 *
	 * @param id 待查询订单的ID。
	 * @return 符合条件的订单对象，如果找不到则返回null。
	 */
	com.example.deepschool.Model.Order selectById (Long id);
	
	/**
	 * 更新一个订单的信息。
	 *
	 * @param order 待更新的订单对象，包含新的订单信息。
	 * @return 更新后的订单对象。
	 */
	com.example.deepschool.Model.Order update (com.example.deepschool.Model.Order order);
	
	/**
	 * 查询用户所有待处理的订单。
	 *
	 * @param UUID 请求的token。
	 * @return 用户所有待处理的订单数组。
	 */
	com.example.deepschool.Model.Order[] selectByPending (String UUID);
	
	/**
	 * 查询用户所有已支付的订单。
	 *
	 * @param UUID 请求的token。
	 * @return 用户所有已支付的订单数组。
	 */
	com.example.deepschool.Model.Order[] selectByPaid (String UUID);
	
	/**
	 * 查询用户所有已取消的订单。
	 *
	 * @param UUID 请求的token。
	 * @return 用户所有已取消的订单数组。
	 */
	com.example.deepschool.Model.Order[] selectByCancelled (String UUID);
	
	/**
	 * 根据课程ID查询订购该课程的用户数量。
	 *
	 * @param courseId 课程ID。
	 * @return 订购该课程的用户数量。
	 */
	Integer selectByCourseId (Long courseId);
}
